#pragma once
#include <opencv/cv.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
class Feature
{
public:
	struct siftfeatrue
	{
		vector<KeyPoint> siftcorns;
		Mat siftdescriptors;
	};
	struct surffeature
	{
		vector<KeyPoint> surfcorns;
		vector<float> descriptors;
	};
public:
	Mat *imagedata;
	KeyPoint test;
	vector<KeyPoint> fasecorns;
	vector<vector<Point> > msercorns;
	vector<KeyPoint> starcorns;
	siftfeatrue _siftfeature;
	surffeature _surffeature;
	
public:
	Feature(void);
public:
	~Feature(void);
	void FastCorner();
	void MserCorner();
	void StarCorner();
	void SiftDescriptor();
	void SurfDescriptor();
	void DrawFastFeaturePoint(IplImage *img, int start_x, int start_y);
	void DrawMserFeaturePoint(IplImage *img, int start_x, int start_y);
	void DrawStarFeaturePoint(IplImage *img, int start_x, int start_y);
	void DrawSiftFeaturePoint(IplImage *img, int start_x, int start_y);
	void DrawSurfFeaturePoint(IplImage *img, int start_x, int start_y);
};
